/***********************************************************************
 * Module:  CcnIcono.java
 * Author:  JOlguin01
 * Purpose: Defines the Class CcnIcono
 ***********************************************************************/

package inc.jmc.cyberboard.dao;



import inc.jmc.cyberboard.entitybeans.IconoProducto;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;

import javax.swing.ImageIcon;

import org.apache.log4j.Logger;

public class IconoProductoDao
{
    static Logger logger = Logger.getLogger(IconoProductoDao.class.getName());
    static
    {
        try{
            refreshIconosUsuario();
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
        
        }
    
    
    }
    public int addIconUsuario(Connection conn,IconoProducto recc)throws SQLException
    {
         String insert ="insert into ccn_icono_producto(descripcion,ruta,reservado) " +
                "values(?,?,?)";
        PreparedStatement pstmt=conn.prepareStatement(insert);
        pstmt.setString(1,recc.getDescripcion());
        pstmt.setString(2,recc.getRuta());
        pstmt.setInt(3,recc.isReservado().booleanValue()?1:0);
        int ret=pstmt.executeUpdate();
        pstmt.close();
        
        return ret;
    }
    public int update(Connection conn,IconoProducto user) throws java.sql.SQLException
    {
        String insert ="update ccn_icono_producto set descripcion=?," +
                "ruta=?," +
                "reservado=?," +
                "where id_icono=?";
        PreparedStatement pstmt=conn.prepareStatement(insert);
        pstmt.setString(1,user.getDescripcion());
        pstmt.setString(2,user.getRuta());
        pstmt.setInt(3,user.isReservado().booleanValue()?1:0);
        pstmt.setInt(4,user.getIdIcono().intValue());
        pstmt.executeUpdate();
        pstmt.close();
        
        return 0;
    }
     public int delete(Connection conn,IconoProducto iconobean) throws java.sql.SQLException
    {
        String deletestr ="delete from ccn_icono_producto where DESCRIPCION=? AND " +
                "RUTA=?";
        PreparedStatement pstmt=conn.prepareStatement(deletestr);
        pstmt.setString(1,iconobean.getDescripcion());
        pstmt.setString(2,iconobean.getRuta());
        int a=pstmt.executeUpdate();
        pstmt.close();
        return a;
    }
   private static HashMap<String,IconoProducto> mapIconosUsuario;
        
   public static HashMap<String,IconoProducto> refreshIconosUsuario()throws Exception
   {
       logger.info("ejecutando refreshIconosUsuario()");
        IconoProductoDao.mapIconosUsuario=new HashMap<String,IconoProducto>();
        Connection conn;
        conn=Dao.getConnection();
        String query1 ="select * from ccn_icono_producto where reservado =0";
        PreparedStatement pstmt=conn.prepareStatement(query1);
        ResultSet rs=pstmt.executeQuery();
        while(rs.next())
        {
            IconoProducto recc=new IconoProducto();
            recc.setDescripcion(rs.getString("DESCRIPCION"));
            if(rs.getString("ID_ICONO")!=null)
                recc.setIdIcono(new Integer(rs.getInt("ID_ICONO")));
            if(rs.getString("RESERVADO")!=null)
                recc.setReservado(new Boolean(rs.getBoolean("RESERVADO")));
            recc.setRuta(rs.getString("RUTA"));
            if(recc.getRuta()!=null)
                recc.setImage(new ImageIcon(recc.getRuta()));

            IconoProductoDao.mapIconosUsuario.put(""+recc.getIdIcono(),recc);
        }
        rs.close();
        pstmt.close();
        conn.close();
        return IconoProductoDao.mapIconosUsuario;
    }
   public static IconoProducto getIconofromID(int id)throws Exception
   {
       logger.info("getIconofromID()");
        ///HashMap local1=new HashMap();
        Connection conn;
        conn=Dao.getConnection();
        String query1 ="select * from ccn_icono_producto where id_icono="+id;
        PreparedStatement pstmt=conn.prepareStatement(query1);
        ResultSet rs=pstmt.executeQuery();
        IconoProducto recc=null;
        while(rs.next())
        {
            recc=new IconoProducto();
            recc.setDescripcion(rs.getString("DESCRIPCION"));
            if(rs.getString("ID_ICONO")!=null)
                recc.setIdIcono(new Integer(rs.getInt("ID_ICONO")));
            if(rs.getString("RESERVADO")!=null)
                recc.setReservado(new Boolean(rs.getBoolean("RESERVADO")));
            recc.setRuta(rs.getString("RUTA"));
            if(recc.getRuta()!=null)
                recc.setImage(new ImageIcon(recc.getRuta()));

            
        }
        rs.close();
        pstmt.close();
        conn.close();
        return recc;
    }
   public static HashMap<String,IconoProducto> getHashIconosUsuario()
   {
       return IconoProductoDao.mapIconosUsuario;
   }
   public static ArrayList<IconoProducto> getListIconosUsuario()
   {
       ArrayList<IconoProducto> array=new ArrayList<IconoProducto>();
       Iterator<String> itera=IconoProductoDao.mapIconosUsuario.keySet().iterator();
       while(itera.hasNext())
       {
           String key=itera.next();
           IconoProducto aux=(IconoProducto)IconoProductoDao.mapIconosUsuario.get(key);
           array.add(aux);
       
       }
       return array;
   
   
   }
   
   
}